package service

import (
	dom "a-common/domain"
	"a-common/utils/excel"
	"a-demo/dao"
	"a-demo/domain/entity"
	"sync"

	"github.com/xuri/excelize/v2"
)

var (
	senMomServiceTemp *SenMomService
	senMomDao         = dao.NewSenMomDao()
	senMomServiceOnce sync.Once
)

type SenMomService struct{}

func NewSenMomService() *SenMomService {
	senMomServiceOnce.Do(func() {
		senMomServiceTemp = &SenMomService{}
	})
	return senMomServiceTemp
}

// List 分页
func (m *SenMomService) List(args *entity.SenMomDto) (dom.PageVo, error) {
	return senMomDao.List(args, false)
}

// Get 查
func (m *SenMomService) Get(id string) (entity.SenMomVo, error) {
	return senMomDao.Get(id)
}

// Del 删
func (m *SenMomService) Del(ids string) (int64, error) {
	return senMomDao.Del(ids)
}

// Add 增
func (m *SenMomService) Add(args *entity.SenMomDto) (int64, error) {
	return senMomDao.Add(args)
}

// Edit 改
func (m *SenMomService) Edit(args *entity.SenMomDto) (int64, error) {
	return senMomDao.Edit(args)
}

// Export 导出
func (m *SenMomService) Export(args *entity.SenMomDto, title string) (*excelize.File, error) {
	pageVo, err := senMomDao.List(args, true)
	if err != nil {
		return nil, err
	}
	return excel.NormalDynamicExport(pageVo.Rows, "Sheet1", title, "", true, false, map[string]string{})
}
